// 容斥原理 集合的并
// 集合的并等于集合的交的交错和（奇正偶负）
// 给定一个整数 n 和 m 个不同的质数 p1, p2, ... pm
// 求 1 ~ n 中能被 p1, p2, ... pm 中的至少一个数整除
// 的数有几个？其中 m <= 16，n，pi <= 1e9
// 交集的大小等于 n 除以质数的乘积
// 相关帖子 ：https://www.cnblogs.com/dx123/p/16789990.html
// 相关帖子 ：https://oi-wiki.org/math/combinatorics/inclusion-exclusion-principle/

#include <bits/stdc++.h>

#define ll long long

const int MAXN = 20;
int n, m, prime[MAXN];

// 容斥原理
int compute()
{
    int ans = 0;
    for(int i = 1; i < (1 << m); ++i) // 枚举状态
    {
        int t = 1, sign = -1;
        for(int j = 0; j < m; ++j) // 过滤状态，选择符合状态的质数
        {
            // 状态 i 有选 prime[j] 这个质数
            if(i & (1 << j))
            {
                if((ll)t * prime[j] > n)
                {
                    t = 0;
                    break;
                }
                t *= prime[j]; // 质数的积
                sign = -sign; // 奇正偶负
            }
        }
        if(t) ans += n / t * sign; // 并集的个数
    }
    return ans;
}

int main()
{
    scanf("%d%d", &n, &m);
    for(int i = 0; i < m; ++i) scanf("%d", &prime[i]);
    printf("%d\n", compute());

    return 0;
}